gradle build
gradle build
Gradle은 현대 소프트웨어발에서 널리 사용되는 오픈소스 빌드 자동화 도구로, 특히 Java, Kotlin, Android 애플리케이션 개발에 많이 활용됩니다. gradle build 명령어는 Gradle 프로젝트에서 코드를 컴파일하고, 테스트를 실행하며, 결과 아티팩트(예: JAR, WAR 파일)를 생성하는 핵심 빌드 태스크입니다. 이 문서는 gradle build 명령어의 개념, 동작 방식, 활용 방법 및 관련 주요 사항 체계적으로 설명합니다.
개요
gradle build는 Gradle 프로젝트의 빌드 라이프사이클을 전체적으로 실행하는 명령어입니다. 이 명령어는 프로젝트의 [build.gradle](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%B9%8C%EB%93%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8/build.gradle) 설정 파일에 정의된 빌드 스크립트를 기반으로 여러 하위 태스크를 순차적으로 실행하여 소스 코드를 빌드하고, 테스트를 수행하며, 결과물을 패키징합니다.
Gradle은 의존성 기반 빌드 시스템을 사용하므로, build 명령은 필요한 모든 태스크를 자동으로 결정하고 실행합니다. 이를 통해 개발자는 빌드 과정을 수동으로 관리할 필요 없이, 일관되고 재현 가능한 빌드 환경을 제공받을 수 있습니다.
gradle build의 주요 동작
gradle build 명령어는 다음과 같은 주요 하위 태스크들을 포함합니다:
1. [compileJava](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EC%BB%B4%ED%8C%8C%EC%9D%BC%20%EA%B3%BC%EC%A0%95/compileJava)
- Java 소스 코드(
src/main/java)를 컴파일하여 클래스 파일로 변환합니다. - 컴파일러 오류가 발생하면 빌드가 즉시 중단됩니다.
2. [processResources](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%A6%AC%EC%86%8C%EC%8A%A4%20%EA%B4%80%EB%A6%AC/processResources)
- 리소스 파일(
src/main/resources)을 빌드 출력 디렉터리(build/[classes](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%B9%8C%EB%93%9C%20%ED%83%9C%EC%8A%A4%ED%81%AC/classes)/java/main)로 복사합니다. - 설정 파일, 프로퍼티, 정적 자산 등이 포함됩니다.
3. classes
compileJava와processResources의 출력물을 종합하여 최종 클래스 파일을 준비합니다.- 이 태스크는 종속성 태스크로서, 위 두 태스크가 완료된 후에 실행됩니다.
4. [test](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EC%8B%A4%ED%96%89/test)
- 단위 테스트 코드(
src/test/java)를 컴파일하고 실행합니다. - JUnit, TestNG 등과 통합되어 테스트 결과를 보고합니다.
- 테스트 실패 시 빌드는 실패 상태로 표시되지만, 기본적으로 이후 태스크까지 진행됩니다.
5. [testClasses](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EC%BB%B4%ED%8C%8C%EC%9D%BC/testClasses)
- 테스트 소스 코드를 컴파일한 결과물입니다.
6. [jar](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%ED%8C%A8%ED%82%A4%EC%A7%95/jar)
- 컴파일된 클래스와 리소스를 포함한 JAR 파일을 생성합니다.
- 프로젝트 유형에 따라
war,zip등 다른 패키징 태스크가 실행될 수 있습니다.
7. [assemble](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%B9%8C%EB%93%9C%20%ED%83%9C%EC%8A%A4%ED%81%AC/assemble)
- 모든 아티팩트(예: JAR, WAR)를 생성하지만 테스트는 실행하지 않습니다.
build의 하위 태스크 중 하나입니다.
8. [check](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EC%BD%94%EB%93%9C%20%ED%92%88%EC%A7%88%20%EA%B2%80%EC%82%AC/check)
- 코드 품질 검사, 정적 분석, 테스트 실행 등을 포함합니다.
test외에도checkstyle,pmd,spotbugs등의 태스크가 포함될 수 있습니다.
9. build
- 위 모든 태스크를 종합적으로 실행하며, 빌드 성공 여부를 최종적으로 판단합니다.
build태스크는assemble과check를 의존하고 있으므로, 둘 다 성공해야 전체 빌드가 성공합니다.
gradle build 사용 방법
기본 명령어
./gradlew build
./[gradlew](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%B9%8C%EB%93%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8/gradlew)는 Gradle Wrapper를 사용하는 명령어입니다. 프로젝트 내에 gradlew 스크립트가 포함되어 있어, 시스템에 Gradle이 설치되어 있지 않아도 빌드 가능합니다.
- gradle build로 실행할 수도 있지만, Wrapper 사용이 권장됩니다.
빌드 결과
빌드가 성공하면 다음 디렉터리에 결과물이 생성됩니다:
- [build/classes/java/main](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%B9%8C%EB%93%9C%20%EC%B6%9C%EB%A0%A5%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC/build%2Fclasses%2Fjava%2Fmain): 컴파일된 클래스 파일
- [build/resources/main](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%A6%AC%EC%86%8C%EC%8A%A4%20%EC%B6%9C%EB%A0%A5%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC/build%2Fresources%2Fmain): 처리된 리소스 파일
- [build/libs](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EC%95%84%ED%8B%B0%ED%8C%A9%ED%8A%B8%20%EC%A0%80%EC%9E%A5%EC%86%8C/build%2Flibs)/: 생성된 JAR 또는 WAR 파일
- [build/reports](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EB%A6%AC%ED%8F%AC%ED%8A%B8/build%2Freports)/tests/test/: 테스트 결과 리포트 (HTML 형식)
- build/reports/: 정적 분석 리포트 등
빌드 실패 및 문제 해결
gradle build가 실패하는 주요 원인은 다음과 같습니다:
| 원인 | 설명 | 해결 방법 |
|---|---|---|
| 컴파일 오류 | 문법 오류, 타입 불일치 등 | 소스 코드 점검 및 수정 |
| 테스트 실패 | 단위 테스트 중 assert 실패 |
테스트 코드 또는 로직 수정 |
| 의존성 누락 | build.gradle에 의존성 정의 누락 |
dependencies 블록에 추가 |
| 환경 문제 | JDK 버전 불일치, 메모리 부족 | JDK 확인 및 [gradle.properties](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%EB%B9%8C%EB%93%9C%20%EC%84%A4%EC%A0%95%20%ED%8C%8C%EC%9D%BC/gradle.properties) 설정 |
빌드 문제 디버깅
./gradlew build --stacktrace
./gradlew build --info
./gradlew build --no-daemon
관련 설정 파일
build.gradle
plugins {
id 'java'
}
group 'com.example'
version '1.0.0'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework:spring-core:5.3.21'
testImplementation 'junit:junit:4.13.2'
}
gradle build의 동작을 정의하는 핵심 스크립트입니다.
- 플러그인, 의존성, 레포지토리 등을 설정합니다.
[settings.gradle](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%20%EA%B0%9C%EB%B0%9C/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%20%EC%84%A4%EC%A0%95%20%ED%8C%8C%EC%9D%BC/settings.gradle)
rootProject.name = 'my-app'
gradle.properties
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
참고 자료 및 관련 문서
gradle build는 현대적인 빌드 자동화의 핵심 명령어로, 반복적인 빌드 작업을 효율적이고 안정적으로 수행할 수 있게 해줍니다. CI/CD 파이프라인에서도 자주 사용되며, 일관된 빌드 환경을 보장하는 데 중요한 역할을 합니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.